package com.group01.community.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.group01.community.entity.SysUser;
import com.group01.community.entity.vo.SysUserInfoVo;
import com.group01.community.entity.vo.SysUserVo;

import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author iuoly
 * @since 2022-07-04
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 批量插入
     *
     * @param sysUsers
     */
    void insertBatch(List<SysUser> sysUsers);

    /**
     * 根据用户id查询角色
     * @param userId
     * @return
     */
    SysUser selectRoleByUserId(Long userId);

    /**
     * 根据用户名字查询角色
     *
     * @param username
     * @return
     */
    SysUserVo getUserRoleByUsername(String username);

    /**
     * 根据用户名查询用户个人信息（岗位+部门+角色）
     *
     * @param username
     * @return
     */
    SysUserInfoVo getUserInfoByUserName(String username);

    /**
     * 修改用户信息
     *
     * @param sysUser
     */
    void updateUserInfo(SysUser sysUser);

    /**
     * 根据部门id查询部门成员
     *
     * @param deptId
     * @return
     */
    List<SysUser> getDeptUserByDeptId(Long deptId);

    /**
     * 分页查询
     *
     * @param current
     * @param size
     * @return
     */
    IPage<SysUserInfoVo> selectUserPage(Long current, Long size, SysUser user);
    void updatePassword(String password);
}
